#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
开放商户 - 费率信息变更功能使用示例
"""

import os
import sys

# 添加项目根目录到Python路径，确保能够导入jlpay包
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

from examples.base_example import BaseExample
from jlpay.services.openmerch.change.change_service import ChangeService
from jlpay.model.openmerch.change.rate_info_change import RateInfoChangeRequest


class RateInfoChangeExample(BaseExample):
    """费率信息变更示例类"""
    
    def __init__(self):
        """初始化示例类"""
        super().__init__("examples.openmerch.change.rate_info")
        self.change_service = ChangeService(self.config)
    
    def build_rate_info_change_request(self):
        """构建费率信息变更请求"""
        request = RateInfoChangeRequest()
        
        # 构建费率信息列表
        rate_info = [
            {
                "channel_type": "01",  # 渠道类型：01-银联
                "fee_rate": "0.006",   # 费率：0.6%
                "min_fee": "1",        # 最低手续费：1分
                "max_fee": "1000"      # 最高手续费：10元
            },
            {
                "channel_type": "02",  # 渠道类型：02-微信
                "fee_rate": "0.006",   # 费率：0.6%
                "min_fee": "1",        # 最低手续费：1分
                "max_fee": "1000"      # 最高手续费：10元
            },
            {
                "channel_type": "03",  # 渠道类型：03-支付宝
                "fee_rate": "0.006",   # 费率：0.6%
                "min_fee": "1",        # 最低手续费：1分
                "max_fee": "1000"      # 最高手续费：10元
            }
        ]
        
        # 设置请求参数
        request.set_apply_id("b8659ea518d14c99b78b5ad000a0731a")
        request.set_merch_no("849584358140108")
        request.set_rate_info(rate_info)
        
        return request
    
    def demo(self):
        """执行费率信息变更示例"""
        self.logger.info("开始执行费率信息变更示例")
        
        # 构建请求
        request = self.build_rate_info_change_request()
        
        # 发送请求并处理响应
        self.send_request_and_handle_response(
            self.change_service.change_rate_info,
            "费率信息变更",
            request
        )
        
        self.logger.info("费率信息变更示例执行完毕")


if __name__ == "__main__":
    example = RateInfoChangeExample()
    example.logger.info("=" * 50)
    example.logger.info("===== 费率信息变更示例 开始 =====")
    example.logger.info("=" * 50)
    
    example.demo()
    
    example.logger.info("=" * 50)
    example.logger.info("===== 费率信息变更示例执行完毕 =====")
    example.logger.info("=" * 50) 